package co.edu.javeriana.konigsberg.xavier.entidad;

import java.io.Serializable;
import java.math.BigInteger;
import java.util.Date;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;


/**
 * The persistent class for the programa database table.
 * 
 */
@Entity
@Table(name="programa")
@NamedQueries({
	@NamedQuery(name="Programa.findAll", query="SELECT p FROM Programa p"),
	@NamedQuery(name="Programa.findByStates", query="SELECT p FROM Programa p WHERE p.estado IN :estados")
})
public class Programa implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	private BigInteger idPrograma;

	private String estado;

	private String nombrePrograma;

	@Temporal(TemporalType.TIMESTAMP)
	private Date fechaLimitePropuesta;
	
	private boolean firmaRepresentanteLegal;
	private boolean firmaExterna;
	private String nombreConvenio;

	private BigInteger version;
	private BigInteger cohorte;
	private Double valorPropuesta;
	private Double puntoEquilibrio;
	
	private String nombrePersonaExterna;
	private String cargoOcupaPersonaExterna;
	private String nombreEmpresaPersonaExterna;
	
	private BigInteger numeroHorasPrograma;
	
	private String urlTecnicaRepositorio;
	private String urlFinancieraRepositorio;
	
	private String urlLogo;
	
	private BigInteger idFacultadLider;
	
	private boolean cronogramaPublicado;
	
	private boolean regionalizacion;
	
	private BigInteger minimoParticipantes;
	
	private BigInteger maximoParticipantes;

	private boolean adjudicado;
	
	@ManyToOne
	@JoinColumn(name="idEmpresa")
	private Empresa empresa;
	
	//bi-directional many-to-one association to Categoria
	@ManyToOne
	@JoinColumn(name="idCategoria")
	private Categoria categoria;

	//bi-directional many-to-one association to Ciudad
	@ManyToOne
	@JoinColumn(name="idCiudad")
	private Ciudad ciudad;
//
//	//bi-directional many-to-one association to Departamento
//	@ManyToOne
//	@JoinColumn(name="idDepartamento")
//	private Departamento departamento;
	
	//bi-directional many-to-one association to Modalidad
	@ManyToOne
	@JoinColumn(name="idModalidad")
	private Modalidad modalidad;

	//bi-directional many-to-one association to Tipoprograma
	@ManyToOne
	@JoinColumn(name="idTipoPrograma")
	private Tipoprograma tipoprograma;

	public Programa() {
	}

	public BigInteger getIdPrograma() {
		return this.idPrograma;
	}

	public void setIdPrograma(BigInteger idPrograma) {
		this.idPrograma = idPrograma;
	}

	public String getEstado() {
		return this.estado;
	}

	public void setEstado(String estado) {
		this.estado = estado;
	}

	public String getNombrePrograma() {
		return this.nombrePrograma;
	}

	public void setNombrePrograma(String nombrePrograma) {
		this.nombrePrograma = nombrePrograma;
	}

	public Categoria getCategoria() {
		return this.categoria;
	}

	public void setCategoria(Categoria categoria) {
		this.categoria = categoria;
	}

	public Ciudad getCiudad() {
		return this.ciudad;
	}

	public void setCiudad(Ciudad ciudad) {
		this.ciudad = ciudad;
	}

	public Modalidad getModalidad() {
		return this.modalidad;
	}

	public void setModalidad(Modalidad modalidad) {
		this.modalidad = modalidad;
	}

	public Tipoprograma getTipoprograma() {
		return this.tipoprograma;
	}

	public void setTipoprograma(Tipoprograma tipoprograma) {
		this.tipoprograma = tipoprograma;
	}

	public BigInteger getVersion() {
		return version;
	}

	public void setVersion(BigInteger version) {
		this.version = version;
	}

	public Double getValorPropuesta() {
		return valorPropuesta;
	}

	public void setValorPropuesta(Double valorPropuesta) {
		this.valorPropuesta = valorPropuesta;
	}

	public Double getPuntoEquilibrio() {
		return puntoEquilibrio;
	}

	public void setPuntoEquilibrio(Double puntoEquilibrio) {
		this.puntoEquilibrio = puntoEquilibrio;
	}

	public Date getFechaLimitePropuesta() {
		return fechaLimitePropuesta;
	}

	public void setFechaLimitePropuesta(Date fechaLimitePropuesta) {
		this.fechaLimitePropuesta = fechaLimitePropuesta;
	}

	public boolean getFirmaRepresentanteLegal() {
		return firmaRepresentanteLegal;
	}

	public void setFirmaRepresentanteLegal(boolean firmaRepresentanteLegal) {
		this.firmaRepresentanteLegal = firmaRepresentanteLegal;
	}

	public String getNombreConvenio() {
		return nombreConvenio;
	}

	public void setNombreConvenio(String nombreConvenio) {
		this.nombreConvenio = nombreConvenio;
	}

	public BigInteger getCohorte() {
		return cohorte;
	}

	public void setCohorte(BigInteger cohorte) {
		this.cohorte = cohorte;
	}

	public boolean isFirmaExterna() {
		return firmaExterna;
	}

	public void setFirmaExterna(boolean firmaExterna) {
		this.firmaExterna = firmaExterna;
	}

	public Empresa getEmpresa() {
		return empresa;
	}

	public void setEmpresa(Empresa empresa) {
		this.empresa = empresa;
	}

	public String getNombrePersonaExterna() {
		return nombrePersonaExterna;
	}

	public void setNombrePersonaExterna(String nombrePersonaExterna) {
		this.nombrePersonaExterna = nombrePersonaExterna;
	}

	public String getCargoOcupaPersonaExterna() {
		return cargoOcupaPersonaExterna;
	}

	public void setCargoOcupaPersonaExterna(String cargoOcupaPersonaExterna) {
		this.cargoOcupaPersonaExterna = cargoOcupaPersonaExterna;
	}

	public String getNombreEmpresaPersonaExterna() {
		return nombreEmpresaPersonaExterna;
	}

	public void setNombreEmpresaPersonaExterna(String nombreEmpresaPersonaExterna) {
		this.nombreEmpresaPersonaExterna = nombreEmpresaPersonaExterna;
	}

	public BigInteger getNumeroHorasPrograma() {
		return numeroHorasPrograma;
	}

	public void setNumeroHorasPrograma(BigInteger numeroHorasPrograma) {
		this.numeroHorasPrograma = numeroHorasPrograma;
	}

	public String getUrlLogo() {
		return urlLogo;
	}

	public void setUrlLogo(String urlLogo) {
		this.urlLogo = urlLogo;
	}

	public String getUrlTecnicaRepositorio() {
		return urlTecnicaRepositorio;
	}

	public void setUrlTecnicaRepositorio(String urlTecnicaRepositorio) {
		this.urlTecnicaRepositorio = urlTecnicaRepositorio;
	}

	public String getUrlFinancieraRepositorio() {
		return urlFinancieraRepositorio;
	}

	public void setUrlFinancieraRepositorio(String urlFinancieraRepositorio) {
		this.urlFinancieraRepositorio = urlFinancieraRepositorio;
	}

	public boolean isCronogramaPublicado() {
		return cronogramaPublicado;
	}

	public void setCronogramaPublicado(boolean cronogramaPublicado) {
		this.cronogramaPublicado = cronogramaPublicado;
	}

	public BigInteger getIdFacultadLider() {
		return idFacultadLider;
	}

	public void setIdFacultadLider(BigInteger idFacultadLider) {
		this.idFacultadLider = idFacultadLider;
	}

	public boolean isRegionalizacion() {
		return regionalizacion;
	}

	public void setRegionalizacion(boolean regionalizacion) {
		this.regionalizacion = regionalizacion;
	}

	public BigInteger getMinimoParticipantes() {
		return minimoParticipantes;
	}

	public void setMinimoParticipantes(BigInteger minimoParticipantes) {
		this.minimoParticipantes = minimoParticipantes;
	}

	public BigInteger getMaximoParticipantes() {
		return maximoParticipantes;
	}

	public void setMaximoParticipantes(BigInteger maximoParticipantes) {
		this.maximoParticipantes = maximoParticipantes;
	}

	public boolean isAdjudicado() {
		return adjudicado;
	}

	public void setAdjudicado(boolean adjudicado) {
		this.adjudicado = adjudicado;
	}
}